/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package org.genew.squadra.xml.model.wellformed;

import com.sun.org.apache.xalan.internal.xsltc.runtime.BasisLibrary;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.*;
import org.xml.sax.SAXException;

/**
 *
 * @author Mario
 */
public class XMLTest {
    
    
    public static Document loadDocument(String path){
         MyErrorHandler h = new MyErrorHandler();
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();//creiamo la factory
        dbf.setNamespaceAware(false);//disabilitiamo la conoscienza dei namespace
        dbf.setValidating(false);//prende la dtd associata e vede se è valida// se siamo sicure della provenienza del documento
        //tipo che il documento è stato generato non manipolato non validatelo mai perchè validare posrta via tempo
        try {
            //vuol dire attivare la validazione per dtd quindi se usi gli schemi o altro va messo a FALSE
            DocumentBuilder db = dbf.newDocumentBuilder();//è il benedetto parser con le caratteristiche che vogliamo
            db.setErrorHandler(h);
            return db.parse(new File(path));
        } catch (ParserConfigurationException ex) {
            System.out.println("impossibile creare il parser xml richiesto");
        } catch (SAXException ex) {//eeccezione che viene fuori col parser
            //possiamo smettere di gestire la sax exception da qui.../la stampa l'ha fatta l'error handler
        } catch (IOException ex) {
            System.out.println("errore I/O");
        }
        //carichiamo il documento
        return null;
    }
  
    
}
